package com.huatai.user.service;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.huatai.common.api.R;
import com.huatai.user.entity.User;
import com.huatai.user.entity.UserCheckRecord;
import com.huatai.user.vo.*;

import java.util.List;
import java.util.Map;

public interface UserService extends IService<User> {
	/**
	 * 新增用户更新用户信息
	 * @param user
	 * @return
	 */
    R saveUser(User user);

	/**
	 * 删除用户
	 * @param userId
	 * @return
	 */
	boolean delUser(Long userId);

	/**
	 * 获取用户详细信息
	 * @param account
	 * @return
	 */
	UserVo findUserInfo(String account);

	/**
	 * 获取用户列表信息
	 * @param userParamInfo
	 * @return
	 */
	IPage<UserInfoVo> getUserList(UserParamInfo userParamInfo);

	/**
	 * 用户角色添加编辑
	 * @param userRoleParamVo
	 * @return
	 */
	boolean userRoleAddEdit(UserRoleParamVo userRoleParamVo);

	/**
	 * 获取用户资源权限
	 * @return
	 */
	List<PermissionVo> getUserPermissions();

	/**
	 * 获取用户角色列表包含选中状态（前端回显使用）
	 * @return
	 */
	List<RoleVo> getUserRoles(Long userId);

	/**
	 * 用户密码修改
	 * @param origPassword
	 * @param newPassword
	 * @param affirmPassword
	 * @return
	 */
	boolean userPasswordEdit(String origPassword,String newPassword,String affirmPassword);

	/**
	 * 用户密码重置
	 * @param userId
	 * @return
	 */
	boolean userPasswordReset(Long userId);

	/**
	 * 禁用用户
	 * @param uid
	 * @return
	 */
	boolean stopUser(Long uid);

	/**
	 * 添加用户端用户
	 * @param user
	 * @return
	 */
	String addUser(User user);

	/**
	 * 用户端密码重置
	 * @param uid
	 * @return
	 */
	String licentUserPwReset(Long uid);

	/**
	 * 客户端用户注册
	 * @param userVo
	 * @return
	 */
	boolean userRegister(UserRegisterVo userVo);

	/**
	 * 客户端密码自行修改
	 * @param origPassword
	 * @param newPassword
	 * @return
	 */
	boolean clientUserPasswordEdit(String origPassword, String newPassword);

	/**
	 * 获取用户信息
	 * @return
	 */
    R<User> getLoginUserInfo();
}

